3 research outputs found
Multi-scale geometry interpolation
Interpolating vertex positions among triangle meshes with identical vertex-edge graphs is a fundamental part of many geometric modelling systems. Linear vertex interpolation is robust but fails to preserve local shape. Most recent approaches identify local affine transformations for parts of the mesh, model desired interpolations of the affine transformations, and then optimize vertex positions to conform with the desired transformations. However, the local interpolation of the rotational part is non-trivial for more than two input configurations and ambiguous if the meshes are deformed significantly. We propose a solution to the vertex interpolation problem that starts from interpolating the local metric (edge lengths) and mean curvature (dihedral angles) and makes consistent choices of local affine transformations using shape matching applied to successively larger parts of the mesh. The local interpolation can be applied to any number of input vertex configurations and due to the hierarchical scheme for generating consolidated vertex positions, the approach is fast and can be applied to very large meshes
Abbildung sequentieller C-Programme auf parallel arbeitende Zellularautomaten
Single-Core Prozessorsysteme werden in der Gegenwart zunehmend von Multi-
Core Architekturen abgelöst.Während bis zu Beginn der 2000er Jahre parallele
Architekturen hauptsächlich in wissenschaftlichen und industriellen Großrechnern
eingesetzt wurden, findet man heute in vielen verschiedenen Gerätetypen
Multi-Core Prozessoren - angefangen bei Heimcomputern bzw. Arbeitsplatzrechnern,
über Smartphones und Tablets bis hin zu eingebetteten Systemen in
Fahrzeugen.
Ein Problem paralleler Architekturen besteht aus der Sicht von Softwareentwicklern
in der, verglichen mit Single-Core Systemen, aufwändigen Programmierung.
Zur effizienten Ausnutzung aller zur Verfügung stehenden Ressourcen
müssen Konzepte erarbeitet werden, die einerseits möglichst viele Berechnungen
parallel durchführen, andererseits keine Fehler aufgrund von Dateninkonsistenzen
zwischen den Recheneinheiten erzeugen. Hinzu kommt, dass zur Programmierung
verschiedener paralleler Architekturen unterschiedliche Konzepte
angewendet und voneinander abweichende Programmiermodelle eingesetzt
werden müssen. Ein höherer Entwicklungsaufwand und zusätzlichen Kosten
bei der Erstellung von Software sind Folgen davon.
Die vorliegende Arbeit widmet sich der Lösung dieser Probleme und bietet
Lösungsansätze für zukünftige Untersuchungen. Es wird ein Verfahren zur Abbildung
sequentieller Algorithmen, geschrieben in der Programmiersprache C,
auf ein Modell vorgestellt, das auf Zellularautomaten basiert. Die Zellen des
Modells und ihre Verbindungen untereinander stellen eine Repräsentation des
kompilierten Algorithmus dar und sind in der Lage, diesen durch Bearbeitung
von Teilaufgaben und Kommunikation untereinander auszuwerten. Das entwickelte
System ist selbstsynchronisierend, das bedeutet, die Zellen können parallel
verarbeitet werden und beachten selbständig die durch den Algorithmus
implizit vorgegebenen Datenabhängigkeiten. Im Gegensatz zu anderen bereits
existierenden Verfahren ist die übersetzung der Algorithmen nicht auf eine
bestimmte Zielarchitektur ausgerichtet. Die aus den Algorithmen generierten
Zellularautomaten können auf verschiedene parallele Architekturen übertragen
und auf diesen Systemen ausgewertet werden.
Zur Bearbeitung der generierten Zellularautomaten sind sowohl Multi-Core
CPU-Systeme, Many-Core GPU-Systeme als auch FPGAs einsetzbar. In der
Arbeit werden Verfahren zur übertragung und Auswertung auf die genannten
Architekturen beschrieben sowie experimentelle Vergleiche zur Performance
der Zellularautomaten auf den verschiedenen Systemen vorgestellt.Single-core processor systems are nowadays more and more replaced by multicore
architectures. At the beginning of the 21st century parallel architectures
were mainly used for scientific and industrial mainframes. Today they can be
found in many different systems and devices - from personal computers and
workstations through smartphones and tablets to embedded systems in cars
and other vehicles.
One of the main problems for software developers is the complex programming
of parallel architectures compared to single-core systems. To efficiently
use the capacity of all available resources it is necessary to develop concepts,
that do as many computations as possible in parallel but avoid errors that are
caused by data inconsistencies. Additionally the different parallel architectures
aren't compatible. Each parallel architecture requires the use of a special concept
and programming model. Consequences of this heterogeneity are higher
development times and higher costs for new software.
The present thesis occupies the solution of these problems and illustrates
methods for the resolution of future investigations. A method for mapping
sequential algorithms, written in the C programming language, to a cellular
automata based model is explained. The cells and the connections to their
neighbours are a representation of the compiled algorithm and are able to evaluate
the algorithm by performing subtasks and communicating to other cells.
The developed system is self-synchronizing, meaning that all cells can do their
work in parallel and taking care of implicitly given data dependencies from the
original algorithm. In contrast to existing techniques the presented approach
isn't focused on one specific target architecture. The generated cellular automata
can be mapped to different parallel architectures and then be evaluated
on these systems.
Multi-core CPU systems, many-core GPU systems and FPGAs can be used
to handle the generated cellular automata. The present thesis describes methods
for transferring and evaluating the generated cellular automata on the
named parallel architectures. Furthermore experimental comparisons between
the performance of the execution on the different target systems are illustrated